package com.ruoyi.user.service.impl;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.user.mapper.RegionUserWishlistsMapper;
import com.ruoyi.user.domain.RegionUserWishlists;
import com.ruoyi.user.service.IRegionUserWishlistsService;

/**
 * 区域用户愿望单Service业务层处理
 *
 * @author ruoyi
 * @date 2025-10-21
 */
@Service
public class RegionUserWishlistsServiceImpl implements IRegionUserWishlistsService
{
    @Autowired
    private RegionUserWishlistsMapper regionUserWishlistsMapper;

    /**
     * 查询区域用户愿望单
     *
     * @param wishlistId 区域用户愿望单主键
     * @return 区域用户愿望单
     */
    @Override
    public RegionUserWishlists selectRegionUserWishlistsByWishlistId(String wishlistId)
    {
        return regionUserWishlistsMapper.selectRegionUserWishlistsByWishlistId(wishlistId);
    }

    /**
     * 查询区域用户愿望单列表
     *
     * @param regionUserWishlists 区域用户愿望单
     * @return 区域用户愿望单
     */
    @Override
    public List<RegionUserWishlists> selectRegionUserWishlistsList(RegionUserWishlists regionUserWishlists)
    {
        return regionUserWishlistsMapper.selectRegionUserWishlistsList(regionUserWishlists);
    }

    /**
     * 新增区域用户愿望单
     *
     * @param regionUserWishlists 区域用户愿望单
     * @return 结果
     */
    @Override
    public int insertRegionUserWishlists(RegionUserWishlists regionUserWishlists)
    {
        return regionUserWishlistsMapper.insertRegionUserWishlists(regionUserWishlists);
    }

    /**
     * 修改区域用户愿望单
     *
     * @param regionUserWishlists 区域用户愿望单
     * @return 结果
     */
    @Override
    public int updateRegionUserWishlists(RegionUserWishlists regionUserWishlists)
    {
        return regionUserWishlistsMapper.updateRegionUserWishlists(regionUserWishlists);
    }

    /**
     * 批量删除区域用户愿望单
     *
     * @param wishlistIds 需要删除的区域用户愿望单主键
     * @return 结果
     */
    @Override
    public int deleteRegionUserWishlistsByWishlistIds(String[] wishlistIds)
    {
        return regionUserWishlistsMapper.deleteRegionUserWishlistsByWishlistIds(wishlistIds);
    }

    /**
     * 删除区域用户愿望单信息
     *
     * @param wishlistId 区域用户愿望单主键
     * @return 结果
     */
    @Override
    public int deleteRegionUserWishlistsByWishlistId(String wishlistId)
    {
        return regionUserWishlistsMapper.deleteRegionUserWishlistsByWishlistId(wishlistId);
    }

    /**
     * 根据区域ID查询愿望榜单列表
     *
     * @param regionId 区域ID
     * @return 区域用户愿望单集合
     */
    @Override
    public List<RegionUserWishlists> selectRegionUserWishlistsByRegionId(String regionId)
    {
        return regionUserWishlistsMapper.selectRegionUserWishlistsByRegionId(regionId);
    }

    /**
     * 根据区域ID和用户ID添加愿望
     *
     * @param regionId 区域ID
     * @param customerId 用户ID
     * @param wishlistData 愿望数据对象
     * @return 结果
     */
    @Override
    public int addWishlistByRegionAndCustomer(String regionId, String customerId, RegionUserWishlists wishlistData)
    {
        // 验证路径参数
        if (regionId == null || regionId.trim().isEmpty()) {
            throw new IllegalArgumentException("区域ID不能为空");
        }
        if (customerId == null || customerId.trim().isEmpty()) {
            throw new IllegalArgumentException("用户ID不能为空");
        }

        // 验证愿望内容
        if (wishlistData.getContent() == null || wishlistData.getContent().trim().isEmpty()) {
            throw new IllegalArgumentException("愿望内容不能为空");
        }

        // 设置区域ID和用户ID到数据对象中（确保数据一致性）
        wishlistData.setRegionId(regionId);
        wishlistData.setCustomerId(customerId);

        // 检查是否已存在相同内容的愿望
        int duplicateCount = regionUserWishlistsMapper.checkDuplicateWishlist(
                regionId,
                customerId,
                wishlistData.getContent()
        );
        if (duplicateCount > 0) {
            // 如果已存在相同愿望，返回0表示未添加
            return 0;
        }

        // 设置创建时间和更新时间
        java.util.Date now = new java.util.Date();
        wishlistData.setCreatedAt(now);
        wishlistData.setUpdatedAt(now);

        // 调用Mapper添加愿望
        return regionUserWishlistsMapper.insertWishlistByRegionAndCustomer(regionId, customerId, wishlistData);
    }
}
